package cn.iocoder.yudao.framework.business.basic.dao.query;

import cn.iocoder.yudao.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.github.yulichang.wrapper.MPJLambdaWrapper;

import java.util.Collection;
import java.util.function.Consumer;

/**
 * 拓展 MyBatis Plus Join MPJLambdaWrapper 类
 *
 *  @param <T> 数据类型
 */
@SuppressWarnings("unused")
public class CoreJoinLambdaQueryWrapper<T> extends MPJLambdaWrapperX<T> {
    
    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> likeIfPresent(SFunction<R, ?> column, String val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.likeIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> inIfPresent(SFunction<R, ?> column, Collection<?> values) {
        return (CoreJoinLambdaQueryWrapper<T>) super.inIfPresent(column, values);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> inIfPresent(SFunction<R, ?> column, Object... values) {
        return (CoreJoinLambdaQueryWrapper<T>) super.inIfPresent(column, values);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> eqIfPresent(SFunction<R, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.eqIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> neIfPresent(SFunction<R, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.neIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> gtIfPresent(SFunction<R, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.gtIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> geIfPresent(SFunction<R, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.geIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> ltIfPresent(SFunction<R, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.ltIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> leIfPresent(SFunction<R, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.leIfPresent(column, val);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> betweenIfPresent(SFunction<R, ?> column, Object val1, Object val2) {
        return (CoreJoinLambdaQueryWrapper<T>) super.betweenIfPresent(column, val1, val2);
    }

    @Override
    public <R> CoreJoinLambdaQueryWrapper<T> betweenIfPresent(SFunction<R, ?> column, Object[] values) {
        return (CoreJoinLambdaQueryWrapper<T>) super.betweenIfPresent(column, values);
    }

    @Override
    public <X> CoreJoinLambdaQueryWrapper<T> eq(boolean condition, SFunction<X, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.eq(condition, column, val);
    }

    @Override
    public <X> CoreJoinLambdaQueryWrapper<T> eq(SFunction<X, ?> column, Object val) {
        return (CoreJoinLambdaQueryWrapper<T>) super.eq(column, val);
    }

    @Override
    public <X> CoreJoinLambdaQueryWrapper<T> orderByDesc(SFunction<X, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.orderByDesc(column);
    }

    @Override
    public CoreJoinLambdaQueryWrapper<T> last(String lastSql) {
        return (CoreJoinLambdaQueryWrapper<T>) super.last(lastSql);
    }

    @Override
    public <X> CoreJoinLambdaQueryWrapper<T> in(SFunction<X, ?> column, Collection<?> coll) {
        return (CoreJoinLambdaQueryWrapper<T>) super.in(column, coll);
    }

    @Override
    public CoreJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAll(clazz);
    }

    @Override
    public CoreJoinLambdaQueryWrapper<T> selectAll(Class<?> clazz, String prefix) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAll(clazz, prefix);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAs(column, alias);
    }

    @Override
    public <E> CoreJoinLambdaQueryWrapper<T> selectAs(String column, SFunction<E, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAs(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectAs(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAs(column, alias);
    }

    @Override
    public <E, X> CoreJoinLambdaQueryWrapper<T> selectAs(String index, SFunction<E, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAs(index, column, alias);
    }

    @Override
    public <E> CoreJoinLambdaQueryWrapper<T> selectAsClass(Class<E> source, Class<?> tag) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAsClass(source, tag);
    }

    @Override
    public <E, F> CoreJoinLambdaQueryWrapper<T> selectSub(Class<E> clazz, Consumer<MPJLambdaWrapper<E>> consumer, SFunction<F, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectSub(clazz, consumer, alias);
    }

    @Override
    public <E, F> CoreJoinLambdaQueryWrapper<T> selectSub(Class<E> clazz, String st, Consumer<MPJLambdaWrapper<E>> consumer, SFunction<F, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectSub(clazz, st, consumer, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectCount(SFunction<S, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectCount(column);
    }

    @Override
    public CoreJoinLambdaQueryWrapper<T> selectCount(Object column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectCount(column, alias);
    }

    @Override
    public <X> CoreJoinLambdaQueryWrapper<T> selectCount(Object column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectCount(column, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectCount(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectCount(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectCount(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectCount(column, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectSum(SFunction<S, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectSum(column);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectSum(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectSum(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectSum(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectSum(column, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectMax(SFunction<S, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectMax(column);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectMax(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectMax(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectMax(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectMax(column, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectMin(SFunction<S, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectMin(column);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectMin(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectMin(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectMin(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectMin(column, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectAvg(SFunction<S, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAvg(column);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectAvg(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAvg(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectAvg(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAvg(column, alias);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectLen(SFunction<S, ?> column) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectLen(column);
    }

    @Override
    public <S> CoreJoinLambdaQueryWrapper<T> selectLen(SFunction<S, ?> column, String alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectLen(column, alias);
    }

    @Override
    public <S, X> CoreJoinLambdaQueryWrapper<T> selectLen(SFunction<S, ?> column, SFunction<X, ?> alias) {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectLen(column, alias);
    }

    @Override
    public CoreJoinLambdaQueryWrapper<T> distinct() {
        return (CoreJoinLambdaQueryWrapper<T>) super.distinct();
    }

    @Override
    public CoreJoinLambdaQueryWrapper<T> selectAll() {
        return (CoreJoinLambdaQueryWrapper<T>) super.selectAll();
    }

    @Override
    public <U> CoreJoinLambdaQueryWrapper<T> union(Class<U> clazz, Consumer<MPJLambdaWrapper<U>> consumer) {
        return (CoreJoinLambdaQueryWrapper<T>) super.union(clazz, consumer);
    }

    @Override
    public <U> CoreJoinLambdaQueryWrapper<T> unionAll(Class<U> clazz, Consumer<MPJLambdaWrapper<U>> consumer) {
        return (CoreJoinLambdaQueryWrapper<T>) super.unionAll(clazz, consumer);
    }

}
